package Ai

type ZhiPuRes struct {
	ID           string          `json:"id"`           // 任务ID
	Created      int64           `json:"created"`      // 请求创建时间，以秒为单位的 Unix 时间戳
	Model        string          `json:"model"`        // 模型名称
	Choices      []Choice        `json:"choices"`      // 当前对话的模型输出内容
	Usage        Usage           `json:"usage"`        // 模型调用的 tokens 数量统计
	WebSearch    []WebSearchInfo `json:"web_search"`   // 网页搜索的相关信息
}

type Choice struct {
	Index        int           `json:"index"`          // 结果下标
	FinishReason string        `json:"finish_reason"`  // 模型推理终止的原因
	Message      Message       `json:"message"`        // 模型返回的文本信息
	ToolCalls    []ToolCall    `json:"tool_calls"`     // 模型生成的应调用函数的名称和参数
}

type Message struct {
	Role    string `json:"role"`    // 当前对话的角色，目前默认为 assistant（模型）
	Content string `json:"content"` // 当前对话的内容，命中函数时此字段为null，未命中函数时返回模型推理结果
}

type ToolCall struct {
	Function  Function `json:"function"` // 模型生成的应调用函数的名称和参数
	ID        string   `json:"id"`       // glm4.sse.responseParameter.choices_child.message_child.id_desc
	Type      string   `json:"type"`     // glm4.sse.responseParameter.choices_child.message_child.type_desc
}

type Function struct {
	Name      string      `json:"name"`      // 模型生成的应调用函数的名称
	Arguments interface{} `json:"arguments"` // 模型生成的 JSON 格式的函数调用参数
}

type Usage struct {
	PromptTokens     int `json:"prompt_tokens"`     // 用户输入的 tokens 数量
	CompletionTokens int `json:"completion_tokens"` // 模型输出的 tokens 数量
	TotalTokens      int `json:"total_tokens"`      // 总 tokens 数量
}

type WebSearchInfo struct {
	Icon    string `json:"icon"`    // 来源网站的icon
	Title   string `json:"title"`   // 搜索结果的标题
	Link    string `json:"link"`    // 搜索结果的网页链接
	Media   string `json:"media"`   // 搜索结果网页来源的名称
	Content string `json:"content"` // 从搜索结果网页中引用的文本内容
}
